package com.gitee.qdbp.jdbc.api;

import com.gitee.qdbp.able.jdbc.condition.TableJoin;

/**
 * 数据库操作对象的构造器<br>
 * qdbp-jdbc简称为qdbc<br>
 * 使用方法示例: <br>
 * <pre>
    &#64;Autowired
    private QdbcBoot qdbcBoot;

    private void xxMethod() {
        // 单表增删改查
        Date today = DateTools.toStartTime(new Date());
        Date yesterday = DateTools.addDay(today, -1);
        { // 查询单个对象
            XxxBean xxxBean = qdbcBoot.crudStream(XxxBean.class)
                .whereById(id)
                .find();
        }
        { // 查询列表(创建时间为今天的)
            List&lt;YyyBean&gt; yyyBeans = qdbcBoot.crudStream(YyyBean.class)
                .where("createTime").greaterEqualsThen(today).end()
                .orderBy("createTime DESC")
                .list();
        }
        { // 分页查询(创建时间为昨天的第1页的10条记录)
            PartList&lt;YyyBean&gt; yyyBeans = qdbcBoot.crudStream(YyyBean.class)
                .where("createTime").greaterEqualsThen(yesterday)
                    .and("createTime").lessThen(today)
                    .end()
                .orderBy("createTime ASC")
                .pageBy(1, 10)
                .list();
        }
        { // 删除昨天待处理和失败的记录
            int rows = qdbcBoot.crudStream(ZzzBean.class)
                .where("state").in(ZzzState.PENDING, ZzzState.ERROR)
                    .and("createTime").greaterEqualsThen(yesterday)
                    .and("createTime").lessThen(today)
                    .end()
                .physicalDelete(); // 物理删除
        }

        { // SQL模板查询
            Map&lt;String, Object&gt; params = ...;
            String sqlId = "user.roles.query";
            List&lt;SysRoleEntity&gt; list = qdbcBoot.sqlStream("SysUserMapper:queryUserRoles")
                .sqlId(sqlId).params(params)
                .pageBy(1,10)
                .resultAs(SysRoleEntity.class)
                .list().asPartList(); // 分页后返回的是PageList, 需要转换为普通List
        }
    }
 * </pre>
 *
 * @author 赵卉华
 * @version 190601
 * @see TableJoin
 */
public interface QdbcBoot extends QdbcBase {
}
